home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d13 / ptv2n1.arc / HEX2DEC.PAS < prev    next >
Pascal/Delphi Source File  |  1991-03-26  |  766b  |  30 lines

  1. FUNCTION Hex2Dec (S : string) : longint;
  2. { returns hexadecimal string as decimal value }
  3. VAR
  4.   Len   : byte absolute S;
  5.   Loop  : byte;
  6.   Li    : longint;
  7.   Num   : longint;
  8.  
  9. BEGIN
  10.   if S [1] = '$' then delete (S, 1, 1);
  11.   if upcase (S [Len]) = 'H' then dec (S [0]);
  12.   Num := 0;
  13.   for Loop := 1 to Len do begin
  14.     Li := 0;
  15.     while
  16.       (HexString [Li] <> S [Loop])         { compare letter }
  17.         and
  18.       (Li < 16)
  19.     do
  20.       inc (Li);                            { inc counter }
  21.     if Li = 16 then begin
  22.       Num := -1;                           { -1 if invalid }
  23.       exit;
  24.       end;
  25.     Num := Num + Li shl ((Len - Loop) * 4);   { add to Num }
  26.     end;
  27.   Hex2Dec := Num;                          { return value }
  28. END;
  29.  
  30.